package com.view;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.validation.constraints.NotNull;

import com.type.TipoDescuentoEnum;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class AcuerdoDetalleView extends BaseView {

	@NotNull(message = "Debe ingresar el tipo de descuento")
	private TipoDescuentoEnum tipoDescuento;

	@NotNull(message = "Debe ingresar la cantidad")
	private Double cantidad;

	@NotNull(message = "Debe ingresar el valor")
	private Double valor;

	private ProductoView producto;

	private Boolean todos;

	public AcuerdoDetalleView(Long id, TipoDescuentoEnum tipoDescuento,
			Double cantidad, Double valor, ProductoView producto, Boolean todos) {
		this.id = id;
		this.tipoDescuento = tipoDescuento;
		this.cantidad = cantidad;
		this.valor = valor;
		this.producto = producto;
		this.todos = todos;
	}

	public AcuerdoDetalleView() {
		this(null, TipoDescuentoEnum.PORCENTAJE, null, null, null,
				Boolean.FALSE);
	}

	public TipoDescuentoEnum getTipoDescuento() {
		return tipoDescuento;
	}

	public void setTipoDescuento(TipoDescuentoEnum tipoDescuento) {
		this.tipoDescuento = tipoDescuento;
	}

	public Double getCantidad() {
		return cantidad;
	}

	public void setCantidad(Double cantidad) {
		this.cantidad = cantidad;
	}

	public Double getValor() {
		return valor;
	}

	public void setValor(Double valor) {
		this.valor = valor;
	}

	public ProductoView getProducto() {
		return producto;
	}

	public void setProducto(ProductoView producto) {
		this.producto = producto;
	}

	public Boolean getTodos() {
		return todos;
	}

	public void setTodos(Boolean todos) {
		this.todos = todos;
	}

	@Override
	public boolean equals(Object obj) {

		AcuerdoDetalleView adv = (AcuerdoDetalleView) obj;

		if (producto != null && adv.getProducto() != null) {
			if (producto.getId() != null && adv.getProducto().getId() != null) {
				return producto.getId().intValue() == adv.getProducto().getId()
						.intValue();
			} else if (producto.getId() == null
					&& adv.getProducto().getId() == null) {
				return true;
			} else {
				return false;
			}
		} else if (producto == null && adv.getProducto() == null) {
			return true;
		} else {
			return false;
		}

	}

	public boolean isPorcentaje() {
		return TipoDescuentoEnum.PORCENTAJE.equals(this.tipoDescuento);
	}
}
